{
  "bundles": [
    {
      "@type": "NXBundle",
      "artifactId": "nuxeo-theme-styling",
      "artifactVersion": "2021.58.6",
      "bundleGroup": {
        "@type": "NXBundleGroup",
        "bundleIds": [
          "org.nuxeo.theme.migration",
          "org.nuxeo.theme.styling"
        ],
        "hierarchyPath": "/grp:org.nuxeo.theme",
        "id": "grp:org.nuxeo.theme",
        "name": "org.nuxeo.theme",
        "parentIds": [],
        "readmes": [],
        "version": "2021.58"
      },
      "bundleId": "org.nuxeo.theme.styling",
      "components": [
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.schema.TypeService--schema",
              "hierarchyPath": "/grp:org.nuxeo.theme/org.nuxeo.theme.styling/org.nuxeo.theme.localconfiguration/Contributions/org.nuxeo.theme.localconfiguration--schema",
              "id": "org.nuxeo.theme.localconfiguration--schema",
              "registrationOrder": 56,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.schema.TypeService",
                "name": "org.nuxeo.ecm.core.schema.TypeService",
                "type": "service"
              },
              "version": "2021.58.6",
              "xml": "<extension point=\"schema\" target=\"org.nuxeo.ecm.core.schema.TypeService\">\n    <schema name=\"theme_configuration\" prefix=\"themeconf\" src=\"schemas/theme_configuration.xsd\"/>\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.schema.TypeService--doctype",
              "hierarchyPath": "/grp:org.nuxeo.theme/org.nuxeo.theme.styling/org.nuxeo.theme.localconfiguration/Contributions/org.nuxeo.theme.localconfiguration--doctype",
              "id": "org.nuxeo.theme.localconfiguration--doctype",
              "registrationOrder": 55,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.schema.TypeService",
                "name": "org.nuxeo.ecm.core.schema.TypeService",
                "type": "service"
              },
              "version": "2021.58.6",
              "xml": "<extension point=\"doctype\" target=\"org.nuxeo.ecm.core.schema.TypeService\">\n\n    <facet name=\"ThemeLocalConfiguration\">\n      <schema name=\"theme_configuration\"/>\n    </facet>\n\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.api.DocumentAdapterService--adapters",
              "hierarchyPath": "/grp:org.nuxeo.theme/org.nuxeo.theme.styling/org.nuxeo.theme.localconfiguration/Contributions/org.nuxeo.theme.localconfiguration--adapters",
              "id": "org.nuxeo.theme.localconfiguration--adapters",
              "registrationOrder": 31,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.api.DocumentAdapterService",
                "name": "org.nuxeo.ecm.core.api.DocumentAdapterService",
                "type": "service"
              },
              "version": "2021.58.6",
              "xml": "<extension point=\"adapters\" target=\"org.nuxeo.ecm.core.api.DocumentAdapterService\">\n    <adapter class=\"org.nuxeo.theme.localconfiguration.LocalThemeConfig\" factory=\"org.nuxeo.theme.localconfiguration.LocalThemeConfigAdapterFactory\"/>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.theme/org.nuxeo.theme.styling/org.nuxeo.theme.localconfiguration",
          "name": "org.nuxeo.theme.localconfiguration",
          "requirements": [],
          "resolutionOrder": 894,
          "services": [],
          "startOrder": 765,
          "version": "2021.58.6",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.theme.localconfiguration\">\n\n  <extension target=\"org.nuxeo.ecm.core.schema.TypeService\" point=\"schema\">\n    <schema name=\"theme_configuration\" prefix=\"themeconf\"\n      src=\"schemas/theme_configuration.xsd\" />\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.core.schema.TypeService\" point=\"doctype\">\n\n    <facet name=\"ThemeLocalConfiguration\">\n      <schema name=\"theme_configuration\" />\n    </facet>\n\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.core.api.DocumentAdapterService\"\n    point=\"adapters\">\n    <adapter class=\"org.nuxeo.theme.localconfiguration.LocalThemeConfig\"\n      factory=\"org.nuxeo.theme.localconfiguration.LocalThemeConfigAdapterFactory\" />\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/theme-local-configuration.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "componentClass": "org.nuxeo.theme.styling.service.ThemeStylingServiceImpl",
          "documentation": "\n    The ThemeStylingService service provides extension points for\n    pluggable resources and resource bundles management per page.\n\n    @since 5.5\n  \n",
          "documentationHtml": "<p>\nThe ThemeStylingService service provides extension points for\npluggable resources and resource bundles management per page.\n</p><p>\n&#64;since 5.5\n</p><p></p>",
          "extensionPoints": [
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.theme.styling.service",
              "descriptors": [
                "org.nuxeo.theme.styling.service.descriptors.ThemePage",
                "org.nuxeo.theme.styling.service.descriptors.PageDescriptor"
              ],
              "documentation": "\n      The pages extension point allows to define a set of resources and\n      resource bundles for a given \"page\", as well as additional information\n      about available flavors, for instance.\n\n      Example:\n\n      <code>\n    <page charset=\"utf-8\" name=\"galaxy/default\">\n        <defaultFlavor>default</defaultFlavor>\n        <flavors>\n            <flavor>default</flavor>\n            <flavor>rainbow</flavor>\n        </flavors>\n        <resources>\n            <bundle>nuxeo_includes</bundle>\n            <bundle>nuxeo_base</bundle>\n            <bundle>nuxeo_header_footer</bundle>\n            <bundle>nuxeo_dm</bundle>\n            <resource>my_resource.css</resource>\n        </resources>\n    </page>\n</code>\n\n\n      The charset and favorites are used inside the page head.\n\n      Flavors define available flavors on this page, resource bundles are\n      also references (see corresponding extension points on this same component).\n\n      This extension point accepts merge. When contributing new elements to\n      flavors or resources, the attribute append=\"true\" should be added,\n      otherwise existing configurations will be overridden.\n\n      Attribute \"charset\" is available only since 7.4 (it was previously\n      defined by the Theme extension point layout configuration).\n\n      Deprecation note: since 7.4, the 'themePage' element is deprecated: just\n      change it to use the 'page' element instead.\n    \n",
              "documentationHtml": "<p>\nThe pages extension point allows to define a set of resources and\nresource bundles for a given &#34;page&#34;, as well as additional information\nabout available flavors, for instance.\n</p><p>\nExample:\n</p><p>\n</p><pre><code>    &lt;page charset&#61;&#34;utf-8&#34; name&#61;&#34;galaxy/default&#34;&gt;\n        &lt;defaultFlavor&gt;default&lt;/defaultFlavor&gt;\n        &lt;flavors&gt;\n            &lt;flavor&gt;default&lt;/flavor&gt;\n            &lt;flavor&gt;rainbow&lt;/flavor&gt;\n        &lt;/flavors&gt;\n        &lt;resources&gt;\n            &lt;bundle&gt;nuxeo_includes&lt;/bundle&gt;\n            &lt;bundle&gt;nuxeo_base&lt;/bundle&gt;\n            &lt;bundle&gt;nuxeo_header_footer&lt;/bundle&gt;\n            &lt;bundle&gt;nuxeo_dm&lt;/bundle&gt;\n            &lt;resource&gt;my_resource.css&lt;/resource&gt;\n        &lt;/resources&gt;\n    &lt;/page&gt;\n</code></pre><p>\nThe charset and favorites are used inside the page head.\n</p><p>\nFlavors define available flavors on this page, resource bundles are\nalso references (see corresponding extension points on this same component).\n</p><p>\nThis extension point accepts merge. When contributing new elements to\nflavors or resources, the attribute append&#61;&#34;true&#34; should be added,\notherwise existing configurations will be overridden.\n</p><p>\nAttribute &#34;charset&#34; is available only since 7.4 (it was previously\ndefined by the Theme extension point layout configuration).\n</p><p>\nDeprecation note: since 7.4, the &#39;themePage&#39; element is deprecated: just\nchange it to use the &#39;page&#39; element instead.\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.theme/org.nuxeo.theme.styling/org.nuxeo.theme.styling.service/ExtensionPoints/org.nuxeo.theme.styling.service--pages",
              "id": "org.nuxeo.theme.styling.service--pages",
              "label": "pages (org.nuxeo.theme.styling.service)",
              "name": "pages",
              "version": "2021.58.6"
            },
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.theme.styling.service",
              "descriptors": [
                "org.nuxeo.theme.styling.service.descriptors.SimpleStyle"
              ],
              "documentation": "\n      The styles extension point is deprecated since 7.4.\n\n      It used to allow defining CSS files holding flavor variables, that can\n      be defined as standard resources on the\n      org.nuxeo.ecm.platform.WebResources extension point.\n    \n",
              "documentationHtml": "<p>\nThe styles extension point is deprecated since 7.4.\n</p><p>\nIt used to allow defining CSS files holding flavor variables, that can\nbe defined as standard resources on the\norg.nuxeo.ecm.platform.WebResources extension point.\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.theme/org.nuxeo.theme.styling/org.nuxeo.theme.styling.service/ExtensionPoints/org.nuxeo.theme.styling.service--styles",
              "id": "org.nuxeo.theme.styling.service--styles",
              "label": "styles (org.nuxeo.theme.styling.service)",
              "name": "styles",
              "version": "2021.58.6"
            },
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.theme.styling.service",
              "descriptors": [
                "org.nuxeo.theme.styling.service.descriptors.FlavorDescriptor"
              ],
              "documentation": "\n      The flavors extension point allows to define a set of variables that can\n      be referenced inside CSS files, for dynamic replacement depending on\n      context, as well as a logo.\n\n      Example:\n\n      <code>\n    <flavor name=\"default\">\n        <label>label.theme.flavor.nuxeo.default</label>\n        <logo>\n            <path>/img/nuxeo_logo.png</path>\n            <previewPath>/img/nuxeo_preview_logo_black.png</previewPath>\n            <width>113</width>\n            <height>20</height>\n            <title>Nuxeo</title>\n        </logo>\n        <links>\n            <icon name=\"icon\">/icons/favicon.png</icon>\n            <icon name=\"shortcut icon\">/icons/favicon.ico</icon>\n        </links>\n        <presetsList>\n            <presets category=\"border\" src=\"themes/palettes/default-borders.properties\"/>\n            <presets category=\"background\" src=\"themes/palettes/default-backgrounds.properties\"/>\n            <presets category=\"font\" src=\"themes/palettes/default-fonts.properties\"/>\n            <presets category=\"color\" src=\"themes/palettes/default-colors.properties\"/>\n        </presetsList>\n        <palettePreview>\n            <colors>\n                <color>#17384e</color>\n                <color>#00adff</color>\n                <color>#00adff</color>\n                <color>#00adff</color>\n                <color>#fff</color>\n                <color>#00adff</color>\n                <color>#404040</color>\n                <color>#cfecff</color>\n                <color>#e6f1ff</color>\n            </colors>\n        </palettePreview>\n    </flavor>\n</code>\n\n\n      The presets files are looked up in the jar holding the flavor declaration.\n      CSS files will reference the flavor marker, as well as additionnal hint\n      about the type of preset to use:\n\n      <code>\n        .nx-page input[type=\"button\"] {\n          background: none \"button (__FLAVOR__ background)\";\n          border-radius: 2px;\n          border: 1px solid;\n          border-color: \"button (__FLAVOR__ border)\";\n          color: \"link.action (__FLAVOR__ color)\";\n          cursor: pointer;\n          display: inline-block;\n          font-size: .95em;\n          font-weight: bold;\n          line-height: 1.3em;\n          margin: 0 .5em .5em 0;\n          padding: .4em .9em;\n          text-decoration: none;\n          white-space: nowrap }\n      </code>\n\n\n      The current flavor can be computed at runtime using negotiator logics, see\n      the negotiators extension point on this service.\n\n      The default flavor defined for a given page will be used if\n      the page does not accept this flavor in its configuration.\n\n      Attribute \"links\" is available only since 7.4 and allows to define\n      favicons visible on the page (it was previously defined by the Theme\n      extension point layout configuration).\n    \n",
              "documentationHtml": "<p>\nThe flavors extension point allows to define a set of variables that can\nbe referenced inside CSS files, for dynamic replacement depending on\ncontext, as well as a logo.\n</p><p>\nExample:\n</p><p>\n</p><pre><code>    &lt;flavor name&#61;&#34;default&#34;&gt;\n        &lt;label&gt;label.theme.flavor.nuxeo.default&lt;/label&gt;\n        &lt;logo&gt;\n            &lt;path&gt;/img/nuxeo_logo.png&lt;/path&gt;\n            &lt;previewPath&gt;/img/nuxeo_preview_logo_black.png&lt;/previewPath&gt;\n            &lt;width&gt;113&lt;/width&gt;\n            &lt;height&gt;20&lt;/height&gt;\n            &lt;title&gt;Nuxeo&lt;/title&gt;\n        &lt;/logo&gt;\n        &lt;links&gt;\n            &lt;icon name&#61;&#34;icon&#34;&gt;/icons/favicon.png&lt;/icon&gt;\n            &lt;icon name&#61;&#34;shortcut icon&#34;&gt;/icons/favicon.ico&lt;/icon&gt;\n        &lt;/links&gt;\n        &lt;presetsList&gt;\n            &lt;presets category&#61;&#34;border&#34; src&#61;&#34;themes/palettes/default-borders.properties&#34;/&gt;\n            &lt;presets category&#61;&#34;background&#34; src&#61;&#34;themes/palettes/default-backgrounds.properties&#34;/&gt;\n            &lt;presets category&#61;&#34;font&#34; src&#61;&#34;themes/palettes/default-fonts.properties&#34;/&gt;\n            &lt;presets category&#61;&#34;color&#34; src&#61;&#34;themes/palettes/default-colors.properties&#34;/&gt;\n        &lt;/presetsList&gt;\n        &lt;palettePreview&gt;\n            &lt;colors&gt;\n                &lt;color&gt;#17384e&lt;/color&gt;\n                &lt;color&gt;#00adff&lt;/color&gt;\n                &lt;color&gt;#00adff&lt;/color&gt;\n                &lt;color&gt;#00adff&lt;/color&gt;\n                &lt;color&gt;#fff&lt;/color&gt;\n                &lt;color&gt;#00adff&lt;/color&gt;\n                &lt;color&gt;#404040&lt;/color&gt;\n                &lt;color&gt;#cfecff&lt;/color&gt;\n                &lt;color&gt;#e6f1ff&lt;/color&gt;\n            &lt;/colors&gt;\n        &lt;/palettePreview&gt;\n    &lt;/flavor&gt;\n</code></pre><p>\nThe presets files are looked up in the jar holding the flavor declaration.\nCSS files will reference the flavor marker, as well as additionnal hint\nabout the type of preset to use:\n</p><p>\n</p><pre><code>        .nx-page input[type&#61;&#34;button&#34;] {\n          background: none &#34;button (__FLAVOR__ background)&#34;;\n          border-radius: 2px;\n          border: 1px solid;\n          border-color: &#34;button (__FLAVOR__ border)&#34;;\n          color: &#34;link.action (__FLAVOR__ color)&#34;;\n          cursor: pointer;\n          display: inline-block;\n          font-size: .95em;\n          font-weight: bold;\n          line-height: 1.3em;\n          margin: 0 .5em .5em 0;\n          padding: .4em .9em;\n          text-decoration: none;\n          white-space: nowrap }\n</code></pre><p>\nThe current flavor can be computed at runtime using negotiator logics, see\nthe negotiators extension point on this service.\n</p><p>\nThe default flavor defined for a given page will be used if\nthe page does not accept this flavor in its configuration.\n</p><p>\nAttribute &#34;links&#34; is available only since 7.4 and allows to define\nfavicons visible on the page (it was previously defined by the Theme\nextension point layout configuration).\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.theme/org.nuxeo.theme.styling/org.nuxeo.theme.styling.service/ExtensionPoints/org.nuxeo.theme.styling.service--flavors",
              "id": "org.nuxeo.theme.styling.service--flavors",
              "label": "flavors (org.nuxeo.theme.styling.service)",
              "name": "flavors",
              "version": "2021.58.6"
            },
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.theme.styling.service",
              "descriptors": [
                "org.nuxeo.ecm.web.resources.core.ResourceDescriptor"
              ],
              "documentation": "\n      The resources extension point is deprecated since 7.4.\n\n      Resources can now be defined directly on the\n      org.nuxeo.ecm.platform.WebResources extension point.\n    \n",
              "documentationHtml": "<p>\nThe resources extension point is deprecated since 7.4.\n</p><p>\nResources can now be defined directly on the\norg.nuxeo.ecm.platform.WebResources extension point.\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.theme/org.nuxeo.theme.styling/org.nuxeo.theme.styling.service/ExtensionPoints/org.nuxeo.theme.styling.service--resources",
              "id": "org.nuxeo.theme.styling.service--resources",
              "label": "resources (org.nuxeo.theme.styling.service)",
              "name": "resources",
              "version": "2021.58.6"
            },
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.theme.styling.service",
              "descriptors": [
                "org.nuxeo.theme.styling.service.descriptors.NegotiationDescriptor"
              ],
              "documentation": "\n      The negotations extension point allows to define a list of Java classes\n      that will compute the current page or current flavor to use, depending\n      on the context.\n\n      Example:\n\n      <code>\n    <negotiation target=\"jsfFlavor\">\n        <negotiator\n            class=\"org.nuxeo.ecm.web.resources.jsf.negotiators.RequestParameter\" order=\"10\">\n            <property name=\"param\">flavor</property>\n        </negotiator>\n        <negotiator\n            class=\"org.nuxeo.ecm.web.resources.jsf.negotiators.RequestAttribute\" order=\"20\">\n            <property name=\"param\">flavor</property>\n        </negotiator>\n        <negotiator class=\"org.nuxeo.ecm.localconf.LocalThemeFlavor\" order=\"30\">\n            <property name=\"negotiatedPageVariable\">jsfPage</property>\n        </negotiator>\n        <negotiator\n            class=\"org.nuxeo.ecm.web.resources.jsf.negotiators.DefaultPageFlavor\" order=\"100\">\n            <property name=\"negotiatedPageVariable\">jsfPage</property>\n        </negotiator>\n    </negotiation>\n</code>\n\n\n      Negotiator classes must implement the\n      org.nuxeo.theme.styling.negotiation.Negotiator interface. The abstract\n      class org.nuxeo.theme.styling.negotiation.AbstractNegotiator can be\n      extended to benefit from generic implementation.\n\n      The context used in negotiator API can depend on the caller. In JSF\n      default pages, this context will be the current JSF FacesContext.\n\n      @since 7.4\n    \n",
              "documentationHtml": "<p>\nThe negotations extension point allows to define a list of Java classes\nthat will compute the current page or current flavor to use, depending\non the context.\n</p><p>\nExample:\n</p><p>\n</p><pre><code>    &lt;negotiation target&#61;&#34;jsfFlavor&#34;&gt;\n        &lt;negotiator\n            class&#61;&#34;org.nuxeo.ecm.web.resources.jsf.negotiators.RequestParameter&#34; order&#61;&#34;10&#34;&gt;\n            &lt;property name&#61;&#34;param&#34;&gt;flavor&lt;/property&gt;\n        &lt;/negotiator&gt;\n        &lt;negotiator\n            class&#61;&#34;org.nuxeo.ecm.web.resources.jsf.negotiators.RequestAttribute&#34; order&#61;&#34;20&#34;&gt;\n            &lt;property name&#61;&#34;param&#34;&gt;flavor&lt;/property&gt;\n        &lt;/negotiator&gt;\n        &lt;negotiator class&#61;&#34;org.nuxeo.ecm.localconf.LocalThemeFlavor&#34; order&#61;&#34;30&#34;&gt;\n            &lt;property name&#61;&#34;negotiatedPageVariable&#34;&gt;jsfPage&lt;/property&gt;\n        &lt;/negotiator&gt;\n        &lt;negotiator\n            class&#61;&#34;org.nuxeo.ecm.web.resources.jsf.negotiators.DefaultPageFlavor&#34; order&#61;&#34;100&#34;&gt;\n            &lt;property name&#61;&#34;negotiatedPageVariable&#34;&gt;jsfPage&lt;/property&gt;\n        &lt;/negotiator&gt;\n    &lt;/negotiation&gt;\n</code></pre><p>\nNegotiator classes must implement the\norg.nuxeo.theme.styling.negotiation.Negotiator interface. The abstract\nclass org.nuxeo.theme.styling.negotiation.AbstractNegotiator can be\nextended to benefit from generic implementation.\n</p><p>\nThe context used in negotiator API can depend on the caller. In JSF\ndefault pages, this context will be the current JSF FacesContext.\n</p><p>\n&#64;since 7.4\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.theme/org.nuxeo.theme.styling/org.nuxeo.theme.styling.service/ExtensionPoints/org.nuxeo.theme.styling.service--negotiations",
              "id": "org.nuxeo.theme.styling.service--negotiations",
              "label": "negotiations (org.nuxeo.theme.styling.service)",
              "name": "negotiations",
              "version": "2021.58.6"
            }
          ],
          "extensions": [],
          "hierarchyPath": "/grp:org.nuxeo.theme/org.nuxeo.theme.styling/org.nuxeo.theme.styling.service",
          "name": "org.nuxeo.theme.styling.service",
          "requirements": [
            "org.nuxeo.ecm.platform.WebResources"
          ],
          "resolutionOrder": 934,
          "services": [
            {
              "@type": "NXService",
              "componentId": "org.nuxeo.theme.styling.service",
              "hierarchyPath": "/grp:org.nuxeo.theme/org.nuxeo.theme.styling/org.nuxeo.theme.styling.service/Services/org.nuxeo.theme.styling.service.ThemeStylingService",
              "id": "org.nuxeo.theme.styling.service.ThemeStylingService",
              "overriden": false,
              "version": "2021.58.6"
            }
          ],
          "startOrder": 948,
          "version": "2021.58.6",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n\n<component name=\"org.nuxeo.theme.styling.service\">\n  <documentation>\n    The ThemeStylingService service provides extension points for\n    pluggable resources and resource bundles management per page.\n\n    @since 5.5\n  </documentation>\n\n  <require>org.nuxeo.ecm.platform.WebResources</require>\n\n  <service>\n    <provide interface=\"org.nuxeo.theme.styling.service.ThemeStylingService\" />\n  </service>\n  <implementation class=\"org.nuxeo.theme.styling.service.ThemeStylingServiceImpl\" />\n\n  <extension-point name=\"pages\">\n    <documentation>\n      The pages extension point allows to define a set of resources and\n      resource bundles for a given \"page\", as well as additional information\n      about available flavors, for instance.\n\n      Example:\n\n      <code>\n        <page name=\"galaxy/default\" charset=\"utf-8\">\n          <defaultFlavor>default</defaultFlavor>\n          <flavors>\n            <flavor>default</flavor>\n            <flavor>rainbow</flavor>\n          </flavors>\n          <resources>\n            <bundle>nuxeo_includes</bundle>\n            <bundle>nuxeo_base</bundle>\n            <bundle>nuxeo_header_footer</bundle>\n            <bundle>nuxeo_dm</bundle>\n            <resource>my_resource.css</resource>\n          </resources>\n        </page>\n      </code>\n\n      The charset and favorites are used inside the page head.\n\n      Flavors define available flavors on this page, resource bundles are\n      also references (see corresponding extension points on this same component).\n\n      This extension point accepts merge. When contributing new elements to\n      flavors or resources, the attribute append=\"true\" should be added,\n      otherwise existing configurations will be overridden.\n\n      Attribute \"charset\" is available only since 7.4 (it was previously\n      defined by the Theme extension point layout configuration).\n\n      Deprecation note: since 7.4, the 'themePage' element is deprecated: just\n      change it to use the 'page' element instead.\n    </documentation>\n    <object class=\"org.nuxeo.theme.styling.service.descriptors.ThemePage\" />\n    <object class=\"org.nuxeo.theme.styling.service.descriptors.PageDescriptor\" />\n  </extension-point>\n\n  <extension-point name=\"styles\">\n    <documentation>\n      The styles extension point is deprecated since 7.4.\n\n      It used to allow defining CSS files holding flavor variables, that can\n      be defined as standard resources on the\n      org.nuxeo.ecm.platform.WebResources extension point.\n    </documentation>\n    <object class=\"org.nuxeo.theme.styling.service.descriptors.SimpleStyle\" />\n  </extension-point>\n\n  <extension-point name=\"flavors\">\n    <documentation>\n      The flavors extension point allows to define a set of variables that can\n      be referenced inside CSS files, for dynamic replacement depending on\n      context, as well as a logo.\n\n      Example:\n\n      <code>\n        <flavor name=\"default\">\n          <label>label.theme.flavor.nuxeo.default</label>\n          <logo>\n            <path>/img/nuxeo_logo.png</path>\n            <previewPath>/img/nuxeo_preview_logo_black.png</previewPath>\n            <width>113</width>\n            <height>20</height>\n            <title>Nuxeo</title>\n          </logo>\n          <links>\n            <icon name=\"icon\">/icons/favicon.png</icon>\n            <icon name=\"shortcut icon\">/icons/favicon.ico</icon>\n          </links>\n          <presetsList>\n            <presets category=\"border\" src=\"themes/palettes/default-borders.properties\" />\n            <presets category=\"background\" src=\"themes/palettes/default-backgrounds.properties\" />\n            <presets category=\"font\" src=\"themes/palettes/default-fonts.properties\" />\n            <presets category=\"color\" src=\"themes/palettes/default-colors.properties\" />\n          </presetsList>\n          <palettePreview>\n            <colors>\n              <color>#17384e</color>\n              <color>#00adff</color>\n              <color>#00adff</color>\n              <color>#00adff</color>\n              <color>#fff</color>\n              <color>#00adff</color>\n              <color>#404040</color>\n              <color>#cfecff</color>\n              <color>#e6f1ff</color>\n            </colors>\n          </palettePreview>\n        </flavor>\n      </code>\n\n      The presets files are looked up in the jar holding the flavor declaration.\n      CSS files will reference the flavor marker, as well as additionnal hint\n      about the type of preset to use:\n\n      <code>\n        .nx-page input[type=\"button\"] {\n          background: none \"button (__FLAVOR__ background)\";\n          border-radius: 2px;\n          border: 1px solid;\n          border-color: \"button (__FLAVOR__ border)\";\n          color: \"link.action (__FLAVOR__ color)\";\n          cursor: pointer;\n          display: inline-block;\n          font-size: .95em;\n          font-weight: bold;\n          line-height: 1.3em;\n          margin: 0 .5em .5em 0;\n          padding: .4em .9em;\n          text-decoration: none;\n          white-space: nowrap }\n      </code>\n\n      The current flavor can be computed at runtime using negotiator logics, see\n      the negotiators extension point on this service.\n\n      The default flavor defined for a given page will be used if\n      the page does not accept this flavor in its configuration.\n\n      Attribute \"links\" is available only since 7.4 and allows to define\n      favicons visible on the page (it was previously defined by the Theme\n      extension point layout configuration).\n    </documentation>\n    <object class=\"org.nuxeo.theme.styling.service.descriptors.FlavorDescriptor\" />\n  </extension-point>\n\n  <extension-point name=\"resources\">\n    <documentation>\n      The resources extension point is deprecated since 7.4.\n\n      Resources can now be defined directly on the\n      org.nuxeo.ecm.platform.WebResources extension point.\n    </documentation>\n    <object class=\"org.nuxeo.ecm.web.resources.core.ResourceDescriptor\" />\n  </extension-point>\n\n  <extension-point name=\"negotiations\">\n    <documentation>\n      The negotations extension point allows to define a list of Java classes\n      that will compute the current page or current flavor to use, depending\n      on the context.\n\n      Example:\n\n      <code>\n        <negotiation target=\"jsfFlavor\">\n          <negotiator class=\"org.nuxeo.ecm.web.resources.jsf.negotiators.RequestParameter\"\n            order=\"10\">\n            <property name=\"param\">flavor</property>\n          </negotiator>\n          <negotiator class=\"org.nuxeo.ecm.web.resources.jsf.negotiators.RequestAttribute\"\n            order=\"20\">\n            <property name=\"param\">flavor</property>\n          </negotiator>\n          <negotiator class=\"org.nuxeo.ecm.localconf.LocalThemeFlavor\"\n            order=\"30\">\n            <property name=\"negotiatedPageVariable\">jsfPage</property>\n          </negotiator>\n          <negotiator\n            class=\"org.nuxeo.ecm.web.resources.jsf.negotiators.DefaultPageFlavor\"\n            order=\"100\">\n            <property name=\"negotiatedPageVariable\">jsfPage</property>\n          </negotiator>\n        </negotiation>\n      </code>\n\n      Negotiator classes must implement the\n      org.nuxeo.theme.styling.negotiation.Negotiator interface. The abstract\n      class org.nuxeo.theme.styling.negotiation.AbstractNegotiator can be\n      extended to benefit from generic implementation.\n\n      The context used in negotiator API can depend on the caller. In JSF\n      default pages, this context will be the current JSF FacesContext.\n\n      @since 7.4\n    </documentation>\n    <object class=\"org.nuxeo.theme.styling.service.descriptors.NegotiationDescriptor\" />\n  </extension-point>\n\n</component>",
          "xmlFileName": "/OSGI-INF/theme-styling-framework.xml",
          "xmlPureComponent": false
        }
      ],
      "fileName": "nuxeo-theme-styling-2021.58.6.jar",
      "groupId": "org.nuxeo.theme",
      "hierarchyPath": "/grp:org.nuxeo.theme/org.nuxeo.theme.styling",
      "id": "org.nuxeo.theme.styling",
      "location": "",
      "manifest": "Manifest-Version: 1.0\r\nArchiver-Version: Plexus Archiver\r\nCreated-By: Apache Maven\r\nBuilt-By: root\r\nBuild-Jdk: 11.0.23\r\nBundle-ManifestVersion: 1\r\nBundle-Version: 2021.58.6-t20240806-091255\r\nBundle-Name: NXThemes Styling\r\nBundle-SymbolicName: org.nuxeo.theme.styling;singleton:=true\r\nBundle-Localization: plugin\r\nBundle-Vendor: Nuxeo\r\nBundle-Category: web\r\nRequire-Bundle: org.nuxeo.web.resources.core\r\nNuxeo-Component: OSGI-INF/theme-styling-framework.xml,OSGI-INF/theme-l\r\n ocal-configuration.xml\r\n\r\n",
      "maxResolutionOrder": 934,
      "minResolutionOrder": 894,
      "packages": [],
      "requirements": [
        "org.nuxeo.web.resources.core"
      ],
      "version": "2021.58.6"
    }
  ],
  "creationDate": 1723459723568,
  "key": "Nuxeo Platform-2021.58",
  "name": "Nuxeo Platform",
  "operations": [],
  "packages": [],
  "pluginSnapshots": {},
  "releaseDate": 1723459723568,
  "version": "2021.58"
}